<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Percepio Trace Recorder: streamports/Jlink_RTT/include/SEGGER_RTT.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr id="projectrow">
  <td id="projectalign">
   <div id="projectname">Percepio Trace Recorder<span id="projectnumber">&#160;v4.8.0</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "search/",'.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */
</script>
<div id="main-nav"></div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
$(document).ready(function(){initNavTree('SEGGER__RTT_8h_source.html',''); initResizable(); });
/* @license-end */
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<div id="MSearchResults">
<div class="SRPage">
<div id="SRIndex">
<div id="SRResults"></div>
<div class="SRStatus" id="Loading">Loading...</div>
<div class="SRStatus" id="Searching">Searching...</div>
<div class="SRStatus" id="NoMatches">No Matches</div>
</div>
</div>
</div>
</div>

<div class="header">
  <div class="headertitle"><div class="title">SEGGER_RTT.h</div></div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a id="l00001" name="l00001"></a><span class="lineno">    1</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00002" name="l00002"></a><span class="lineno">    2</span><span class="comment">*               SEGGER MICROCONTROLLER GmbH &amp; Co. KG                 *</span></div>
<div class="line"><a id="l00003" name="l00003"></a><span class="lineno">    3</span><span class="comment">*       Solutions for real time microcontroller applications         *</span></div>
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno">    4</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno">    5</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno">    6</span><span class="comment">*       (c) 2014 - 2016  SEGGER Microcontroller GmbH &amp; Co. KG        *</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno">    7</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno">    8</span><span class="comment">*       www.segger.com     Support: support@segger.com               *</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno">    9</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno">   10</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno">   11</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno">   12</span><span class="comment">*       SEGGER RTT * Real Time Transfer for embedded targets         *</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno">   13</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno">   14</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno">   15</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno">   16</span><span class="comment">* All rights reserved.                                               *</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno">   17</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno">   18</span><span class="comment">* * This software may in its unmodified form be freely redistributed *</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno">   19</span><span class="comment">*   in source, linkable, or executable form.                         *</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno">   20</span><span class="comment">* * The source code may be modified, provided the source code        *</span></div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno">   21</span><span class="comment">*   retains the above copyright notice, this list of conditions and  *</span></div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno">   22</span><span class="comment">*   the following disclaimer.                                        *</span></div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno">   23</span><span class="comment">* * Modified versions of this software in source, executable, or     *</span></div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno">   24</span><span class="comment">*   linkable form may not be distributed without prior consent of    *</span></div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno">   25</span><span class="comment">*   SEGGER.                                                          *</span></div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno">   26</span><span class="comment">* * This software may only be used for communication with SEGGER     *</span></div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno">   27</span><span class="comment">*   J-Link debug probes.                                             *</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno">   28</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno">   29</span><span class="comment">* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND             *</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno">   30</span><span class="comment">* CONTRIBUTORS &quot;AS IS&quot; AND ANY EXPRESS OR IMPLIED WARRANTIES,        *</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno">   31</span><span class="comment">* INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF           *</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno">   32</span><span class="comment">* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE           *</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno">   33</span><span class="comment">* DISCLAIMED. IN NO EVENT SHALL SEGGER Microcontroller BE LIABLE FOR *</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno">   34</span><span class="comment">* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR           *</span></div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno">   35</span><span class="comment">* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT  *</span></div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno">   36</span><span class="comment">* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;    *</span></div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno">   37</span><span class="comment">* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF      *</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno">   38</span><span class="comment">* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT          *</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno">   39</span><span class="comment">* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE  *</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno">   40</span><span class="comment">* USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH   *</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno">   41</span><span class="comment">* DAMAGE.                                                            *</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno">   42</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno">   43</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno">   44</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno">   45</span><span class="comment">*       RTT version: 6.00e                                           *</span></div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno">   46</span><span class="comment">*                                                                    *</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno">   47</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno">   48</span><span class="comment">---------------------------END-OF-HEADER------------------------------</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno">   49</span><span class="comment">File    : SEGGER_RTT.h</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno">   50</span><span class="comment">Purpose : Implementation of SEGGER real-time transfer which allows</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno">   51</span><span class="comment">          real-time communication on targets which support debugger </span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno">   52</span><span class="comment">          memory accesses while the CPU is running.</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno">   53</span><span class="comment">Revision: $Rev: 4079 $</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno">   54</span><span class="comment">----------------------------------------------------------------------</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno">   55</span><span class="comment">*/</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno">   56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno">   57</span><span class="preprocessor">#ifndef SEGGER_RTT_H</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno">   58</span><span class="preprocessor">#define SEGGER_RTT_H</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno">   59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno">   60</span><span class="preprocessor">#include &quot;SEGGER_RTT_Conf.h&quot;</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno">   61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno">   62</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno">   63</span><span class="comment">*</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno">   64</span><span class="comment">*       Defines, fixed</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno">   65</span><span class="comment">*</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno">   66</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno">   67</span><span class="comment">*/</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno">   68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno">   69</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno">   70</span><span class="comment">*</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno">   71</span><span class="comment">*       Types</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno">   72</span><span class="comment">*</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno">   73</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno">   74</span><span class="comment">*/</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno">   75</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno">   76</span><span class="comment">//</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno">   77</span><span class="comment">// Description for a circular buffer (also called &quot;ring buffer&quot;)</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno">   78</span><span class="comment">// which is used as up-buffer (T-&gt;H)</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno">   79</span><span class="comment">//</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno">   80</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno">   81</span>  <span class="keyword">const</span>     <span class="keywordtype">char</span>*    sName;         <span class="comment">// Optional name. Standard names so far are: &quot;Terminal&quot;, &quot;SysView&quot;, &quot;J-Scope_t4i4&quot;</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno">   82</span>            <span class="keywordtype">char</span>*    pBuffer;       <span class="comment">// Pointer to start of buffer</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno">   83</span>            <span class="keywordtype">unsigned</span> SizeOfBuffer;  <span class="comment">// Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno">   84</span>            <span class="keywordtype">unsigned</span> WrOff;         <span class="comment">// Position of next item to be written by either target.</span></div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno">   85</span>  <span class="keyword">volatile</span>  <span class="keywordtype">unsigned</span> RdOff;         <span class="comment">// Position of next item to be read by host. Must be volatile since it may be modified by host.</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno">   86</span>            <span class="keywordtype">unsigned</span> Flags;         <span class="comment">// Contains configuration flags</span></div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno">   87</span>} SEGGER_RTT_BUFFER_UP;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno">   88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno">   89</span><span class="comment">//</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno">   90</span><span class="comment">// Description for a circular buffer (also called &quot;ring buffer&quot;)</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno">   91</span><span class="comment">// which is used as down-buffer (H-&gt;T)</span></div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno">   92</span><span class="comment">//</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno">   93</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno">   94</span>  <span class="keyword">const</span>     <span class="keywordtype">char</span>*    sName;         <span class="comment">// Optional name. Standard names so far are: &quot;Terminal&quot;, &quot;SysView&quot;, &quot;J-Scope_t4i4&quot;</span></div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno">   95</span>            <span class="keywordtype">char</span>*    pBuffer;       <span class="comment">// Pointer to start of buffer</span></div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno">   96</span>            <span class="keywordtype">unsigned</span> SizeOfBuffer;  <span class="comment">// Buffer size in bytes. Note that one byte is lost, as this implementation does not fill up the buffer in order to avoid the problem of being unable to distinguish between full and empty.</span></div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno">   97</span>  <span class="keyword">volatile</span>  <span class="keywordtype">unsigned</span> WrOff;         <span class="comment">// Position of next item to be written by host. Must be volatile since it may be modified by host.</span></div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno">   98</span>            <span class="keywordtype">unsigned</span> RdOff;         <span class="comment">// Position of next item to be read by target (down-buffer).</span></div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno">   99</span>            <span class="keywordtype">unsigned</span> Flags;         <span class="comment">// Contains configuration flags</span></div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno">  100</span>} SEGGER_RTT_BUFFER_DOWN;</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno">  101</span> </div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno">  102</span><span class="comment">//</span></div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno">  103</span><span class="comment">// RTT control block which describes the number of buffers available</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno">  104</span><span class="comment">// as well as the configuration for each buffer</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno">  105</span><span class="comment">//</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno">  106</span><span class="comment">//</span></div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno">  107</span><span class="keyword">typedef</span> <span class="keyword">struct </span>{</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno">  108</span>  <span class="keywordtype">char</span>                    acID[16];                                 <span class="comment">// Initialized to &quot;SEGGER RTT&quot;</span></div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno">  109</span>  <span class="keywordtype">int</span>                     MaxNumUpBuffers;                          <span class="comment">// Initialized to SEGGER_RTT_MAX_NUM_UP_BUFFERS (type. 2)</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno">  110</span>  <span class="keywordtype">int</span>                     MaxNumDownBuffers;                        <span class="comment">// Initialized to SEGGER_RTT_MAX_NUM_DOWN_BUFFERS (type. 2)</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno">  111</span>  SEGGER_RTT_BUFFER_UP    aUp[SEGGER_RTT_MAX_NUM_UP_BUFFERS];       <span class="comment">// Up buffers, transferring information up from target via debug probe to host</span></div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno">  112</span>  SEGGER_RTT_BUFFER_DOWN  aDown[SEGGER_RTT_MAX_NUM_DOWN_BUFFERS];   <span class="comment">// Down buffers, transferring information down from host via debug probe to target</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno">  113</span>} SEGGER_RTT_CB;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno">  114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno">  115</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno">  116</span><span class="comment">*</span></div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno">  117</span><span class="comment">*       Global data</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno">  118</span><span class="comment">*</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno">  119</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno">  120</span><span class="comment">*/</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno">  121</span><span class="keyword">extern</span> SEGGER_RTT_CB _SEGGER_RTT;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno">  122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno">  123</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno">  124</span><span class="comment">*</span></div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno">  125</span><span class="comment">*       RTT API functions</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno">  126</span><span class="comment">*</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno">  127</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno">  128</span><span class="comment">*/</span></div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno">  129</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno">  130</span>  <span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno">  131</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno">  132</span><span class="keywordtype">int</span>          SEGGER_RTT_AllocDownBuffer         (<span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno">  133</span><span class="keywordtype">int</span>          SEGGER_RTT_AllocUpBuffer           (<span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno">  134</span><span class="keywordtype">int</span>          SEGGER_RTT_ConfigUpBuffer          (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno">  135</span><span class="keywordtype">int</span>          SEGGER_RTT_ConfigDownBuffer        (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName, <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno">  136</span><span class="keywordtype">int</span>          SEGGER_RTT_GetKey                  (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno">  137</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_HasData                 (<span class="keywordtype">unsigned</span> BufferIndex);</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno">  138</span><span class="keywordtype">int</span>          SEGGER_RTT_HasKey                  (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno">  139</span><span class="keywordtype">void</span>         SEGGER_RTT_Init                    (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno">  140</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_Read                    (<span class="keywordtype">unsigned</span> BufferIndex,       <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno">  141</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_ReadNoLock              (<span class="keywordtype">unsigned</span> BufferIndex,       <span class="keywordtype">void</span>* pData,   <span class="keywordtype">unsigned</span> BufferSize);</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno">  142</span><span class="keywordtype">int</span>          SEGGER_RTT_SetNameDownBuffer       (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno">  143</span><span class="keywordtype">int</span>          SEGGER_RTT_SetNameUpBuffer         (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* sName);</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno">  144</span><span class="keywordtype">int</span>          SEGGER_RTT_SetFlagsDownBuffer      (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno">  145</span><span class="keywordtype">int</span>          SEGGER_RTT_SetFlagsUpBuffer        (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keywordtype">unsigned</span> Flags);</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno">  146</span><span class="keywordtype">int</span>          SEGGER_RTT_WaitKey                 (<span class="keywordtype">void</span>);</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno">  147</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_Write                   (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno">  148</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_WriteNoLock             (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno">  149</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_WriteSkipNoLock         (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno">  150</span><span class="keywordtype">unsigned</span>     SEGGER_RTT_WriteString             (<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span>* s);</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno">  151</span><span class="keywordtype">void</span>         SEGGER_RTT_WriteWithOverwriteNoLock(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">void</span>* pBuffer, <span class="keywordtype">unsigned</span> NumBytes);</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno">  152</span><span class="comment">//</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno">  153</span><span class="comment">// Function macro for performance optimization</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno">  154</span><span class="comment">//</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno">  155</span><span class="preprocessor">#define      SEGGER_RTT_HASDATA(n)       (_SEGGER_RTT.aDown[n].WrOff - _SEGGER_RTT.aDown[n].RdOff)</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno">  156</span> </div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno">  157</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno">  158</span><span class="comment">*</span></div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno">  159</span><span class="comment">*       RTT &quot;Terminal&quot; API functions</span></div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno">  160</span><span class="comment">*</span></div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno">  161</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno">  162</span><span class="comment">*/</span></div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno">  163</span><span class="keywordtype">int</span>     SEGGER_RTT_SetTerminal        (<span class="keywordtype">char</span> TerminalId);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno">  164</span><span class="keywordtype">int</span>     SEGGER_RTT_TerminalOut        (<span class="keywordtype">char</span> TerminalId, <span class="keyword">const</span> <span class="keywordtype">char</span>* s);</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno">  165</span> </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno">  166</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno">  167</span><span class="comment">*</span></div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno">  168</span><span class="comment">*       RTT printf functions (require SEGGER_RTT_printf.c)</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno">  169</span><span class="comment">*</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno">  170</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno">  171</span><span class="comment">*/</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno">  172</span><span class="keywordtype">int</span> SEGGER_RTT_printf(<span class="keywordtype">unsigned</span> BufferIndex, <span class="keyword">const</span> <span class="keywordtype">char</span> * sFormat, ...);</div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno">  173</span><span class="preprocessor">#ifdef __cplusplus</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno">  174</span>  }</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno">  175</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno">  176</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno">  177</span><span class="comment">/*********************************************************************</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno">  178</span><span class="comment">*</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno">  179</span><span class="comment">*       Defines</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno">  180</span><span class="comment">*</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno">  181</span><span class="comment">**********************************************************************</span></div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno">  182</span><span class="comment">*/</span></div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno">  183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno">  184</span><span class="comment">//</span></div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno">  185</span><span class="comment">// Operating modes. Define behavior if buffer is full (not enough space for entire message)</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno">  186</span><span class="comment">//</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno">  187</span><span class="preprocessor">#define SEGGER_RTT_MODE_NO_BLOCK_SKIP         (0U)     </span><span class="comment">// Skip. Do not block, output nothing. (Default)</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno">  188</span><span class="preprocessor">#define SEGGER_RTT_MODE_NO_BLOCK_TRIM         (1U)     </span><span class="comment">// Trim: Do not block, output as much as fits.</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno">  189</span><span class="preprocessor">#define SEGGER_RTT_MODE_BLOCK_IF_FIFO_FULL    (2U)     </span><span class="comment">// Block: Wait until there is space in the buffer.</span></div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno">  190</span><span class="preprocessor">#define SEGGER_RTT_MODE_MASK                  (3U)</span></div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno">  191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno">  192</span><span class="comment">//</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno">  193</span><span class="comment">// Control sequences, based on ANSI.</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno">  194</span><span class="comment">// Can be used to control color, and clear the screen</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno">  195</span><span class="comment">//</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno">  196</span><span class="preprocessor">#define RTT_CTRL_RESET                &quot;&#x241B;[0m&quot;</span>         <span class="comment">// Reset to default colors</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno">  197</span><span class="preprocessor">#define RTT_CTRL_CLEAR                &quot;&#x241B;[2J&quot;</span>         <span class="comment">// Clear screen, reposition cursor to top left</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno">  198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno">  199</span><span class="preprocessor">#define RTT_CTRL_TEXT_BLACK           &quot;&#x241B;[2;30m&quot;</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno">  200</span><span class="preprocessor">#define RTT_CTRL_TEXT_RED             &quot;&#x241B;[2;31m&quot;</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno">  201</span><span class="preprocessor">#define RTT_CTRL_TEXT_GREEN           &quot;&#x241B;[2;32m&quot;</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno">  202</span><span class="preprocessor">#define RTT_CTRL_TEXT_YELLOW          &quot;&#x241B;[2;33m&quot;</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno">  203</span><span class="preprocessor">#define RTT_CTRL_TEXT_BLUE            &quot;&#x241B;[2;34m&quot;</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno">  204</span><span class="preprocessor">#define RTT_CTRL_TEXT_MAGENTA         &quot;&#x241B;[2;35m&quot;</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno">  205</span><span class="preprocessor">#define RTT_CTRL_TEXT_CYAN            &quot;&#x241B;[2;36m&quot;</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno">  206</span><span class="preprocessor">#define RTT_CTRL_TEXT_WHITE           &quot;&#x241B;[2;37m&quot;</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno">  207</span> </div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno">  208</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_BLACK    &quot;&#x241B;[1;30m&quot;</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno">  209</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_RED      &quot;&#x241B;[1;31m&quot;</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno">  210</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_GREEN    &quot;&#x241B;[1;32m&quot;</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno">  211</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_YELLOW   &quot;&#x241B;[1;33m&quot;</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno">  212</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_BLUE     &quot;&#x241B;[1;34m&quot;</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno">  213</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_MAGENTA  &quot;&#x241B;[1;35m&quot;</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno">  214</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_CYAN     &quot;&#x241B;[1;36m&quot;</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno">  215</span><span class="preprocessor">#define RTT_CTRL_TEXT_BRIGHT_WHITE    &quot;&#x241B;[1;37m&quot;</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno">  216</span> </div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno">  217</span><span class="preprocessor">#define RTT_CTRL_BG_BLACK             &quot;&#x241B;[24;40m&quot;</span></div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno">  218</span><span class="preprocessor">#define RTT_CTRL_BG_RED               &quot;&#x241B;[24;41m&quot;</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno">  219</span><span class="preprocessor">#define RTT_CTRL_BG_GREEN             &quot;&#x241B;[24;42m&quot;</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno">  220</span><span class="preprocessor">#define RTT_CTRL_BG_YELLOW            &quot;&#x241B;[24;43m&quot;</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno">  221</span><span class="preprocessor">#define RTT_CTRL_BG_BLUE              &quot;&#x241B;[24;44m&quot;</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno">  222</span><span class="preprocessor">#define RTT_CTRL_BG_MAGENTA           &quot;&#x241B;[24;45m&quot;</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno">  223</span><span class="preprocessor">#define RTT_CTRL_BG_CYAN              &quot;&#x241B;[24;46m&quot;</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno">  224</span><span class="preprocessor">#define RTT_CTRL_BG_WHITE             &quot;&#x241B;[24;47m&quot;</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno">  225</span> </div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno">  226</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_BLACK      &quot;&#x241B;[4;40m&quot;</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno">  227</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_RED        &quot;&#x241B;[4;41m&quot;</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno">  228</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_GREEN      &quot;&#x241B;[4;42m&quot;</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno">  229</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_YELLOW     &quot;&#x241B;[4;43m&quot;</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno">  230</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_BLUE       &quot;&#x241B;[4;44m&quot;</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno">  231</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_MAGENTA    &quot;&#x241B;[4;45m&quot;</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno">  232</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_CYAN       &quot;&#x241B;[4;46m&quot;</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno">  233</span><span class="preprocessor">#define RTT_CTRL_BG_BRIGHT_WHITE      &quot;&#x241B;[4;47m&quot;</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno">  234</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno">  235</span> </div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno">  236</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno">  237</span> </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno">  238</span><span class="comment">/*************************** End of file ****************************/</span></div>
</div><!-- fragment --></div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="dir_ead6d7e37ae5e8b81f8d52a6c523bb88.html">streamports</a></li><li class="navelem"><a class="el" href="dir_69e1f4d94ed7295023cdfe145f90debc.html">Jlink_RTT</a></li><li class="navelem"><a class="el" href="dir_008e27a33c58114dd03bcf265ae7cec9.html">include</a></li><li class="navelem"><b>SEGGER_RTT.h</b></li>
    <li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
  </ul>
</div>
</body>
</html>
